from rest_framework import serializers

from apps.goods.models import SKU
from apps.orders.models import OrderInfo, OrderGoods


class SKUSerializer(serializers.ModelSerializer):
    """
    商品SKU序列化器
    目的: 因为订单商品中需要返回商品图片,而其关联的外键SKU模型中有默认图片这个字段,
    所以需要定义一个商品SKU序列化器
    """
    class Meta:
        model = SKU
        # 接口文档中,只需要返回 name 和 default_image这两个字段
        fields = ["name","default_image"]


class OrderGoodsSerializer(serializers.ModelSerializer):
    """
    订单商品序列化器
    目的:因为订单信息中包含订单商品所以需要定义订单商品序列化器
    """
    # 嵌套 商品SKU序列化器
    sku = SKUSerializer()

    class Meta:
        # 订单商品中包含: 图片 商品名称 价格 数量
        model = OrderGoods
        fields = ["count","price","sku"]


class OrderInfoSerializer(serializers.ModelSerializer):
    """
    订单管理-订单信息序列化器
    """
    # 嵌套订单商品序列化器
    skus = OrderGoodsSerializer(many=True)

    class Meta:
        model = OrderInfo
        # all也可以但是不严谨,尽量根据其需要的字段,来返回
        fields = "__all__"
        # fields = ["order_id","create_time"]